/**
 * @func 组件基础配置
 * @author liumengmei
 */
import {
    router,
    request,
    layer,
    datagrid,
    popover,
    confirm,
    message,
    search,
    number
} from 'nuijs';
import select2 from './component/select2';
import methods from './logic/methods.js';
import form from './component/form';
request.config({
    preurl:serviceUrl,
    ext:'.do',
    name:'status',
    value:'200',
    success(res){
        if(res){
            //登录拦截
            if(res.status == 309){
                //非首页跳转到用户中心登录页面
                // if(!util.checkHome()){
                //     util.toLogin()
                // }
            }
            else if(res.status === 500){
                //message('error', res.message)
            }
            //多企业切换串数据
            // else if(res.status === 309){
            //     confirm('系统检测到您已切换企业，是否要重新加载数据', ()=>{
            //         location.reload()
            //     })
            // }
        }
    }
})
let $html = Nui.doc.children();
router.config({
    container:$('#container'),
    onAfter(){
        layer.hide()
        $html.removeClass('l-html');//移出工作台里面的样式
    }
})

datagrid.config({
    isBorder:false,
    paging:{
        button:{
            prev: '<',
            next: '>'
        },
        filter:Nui.noop
    },
    option:{
        className:'f-tal',
        showtitle:true,
        nowrap:true,
        filter(val){
            return val === '' ? '-' : val
        }
    },
    getIndex(e, elem){
        let $row = elem, data = {};
        if(!$row.hasClass('table-row')){
            $row = elem.closest('.table-row')
        }
        return $row.attr('row-index')
    }
})
select2.config({
    nullable:true,
    focus:true,
    noHide:true,
    limit:8,
    var:{
        fieldid:'ids',
        id:'id',
        textname:'name'
    },
    item:function(){    
        return `<li class="con-search-item <%selected($data)%> <%if ${this.tag.multiple == true}%><%else%>single<%/if%>" data-index="<%$index%>" <%toLower | $data%>><s class="iconfont" ></s><%$data['${this.var.textname}']%></li>`
    },
    tag:{
        type:['max100'],
        multiple:true,
        close:false,
        focus:false,
        getData(self,elem){
            let tmp = {
                text:elem.find('[name=textname]').val(),
                fields:{
                    textname:elem.find('[name=textname]').val(),
                }
            }
            tmp.fields[this.var.fieldid] =elem.find('[name='+this.var.fieldid+']').val()
            return tmp;
        },
        deleteMatch:(self, data, tag)=>{
            if(data.fields[self._options.var.fieldid] === tag.fields[self._options.var.fieldid]){
                return true;
            }
        }
    },
    setValue(self, data){
        if(data[this.var.id] === ''){
            self.value(self.tagData, false)
        }
        else{
            if(self.data[0]&&self.data[0][this.var.id] === ''){
                let first = self.data[0];
                let tmp = {
                    text:first[this.var.textname],
                    fields:{
                        textname:first[this.var.textname]
                    }
                }
                tmp.fields[this.var.fieldid] = '';
                self.value(tmp, false);
            }
        }
        let tmp = {
            text:data[this.var.textname],
            fields:{
                textname:data[this.var.textname]
            }
        }
        tmp.fields[this.var.fieldid]= data[this.var.id];

        return tmp;
    },
    selected:function(self, data){
        var exist = false;
        Nui.each(self.tagData, (val)=>{
            if((typeof data[this.var.id]!= 'undefined') && (typeof val.fields[this.var.fieldid]!= 'undefined') && data[this.var.id].toString() === val.fields[this.var.fieldid].toString()&& (data[this.var.textname] === val.fields.textname)){
                exist = true;
                return false;
            }
        })
        return exist
    },
    onChange:function(self){
        if(self.tagData && self.tagData.length){
            self.target.addClass('opt0');
        }else{
            self.target.removeClass('opt0');
        }
        if(this.tag.multiple){
            this.toggle();
        }
    },
    toggle:function(){
        var that = this, self = that.self;
        self.activeTab.$container.find('.con-search-item').each(function(){
            var elem = $(this), data = elem.data();
            elem.toggleClass('s-crt', that.selected(self, data))
        })
    },
    onSelect(self){
        if(self._options.tag.multiple){
            let con =  self.target.prev('div');
            let $tags = self.target.prev('div').find('.ui-tag');
            let width = 0;
            jQuery.each($tags,(k,elem)=>{
                width = width + $(elem).outerWidth(); 
            })
            if(width > this.width && !con.hasClass('w-toe')){
                con.addClass('w-toe');
            }
            else if(width<this.width && con.hasClass('w-toe')){
                con.removeClass('w-toe');
            }
        }
    },
    insert(data){
        var tmpList = [];
        if(Nui.type(data, 'Array')){
            Nui.each(data,(val)=>{
                let tmp = {
                    text:val[this.var.textname],
                    fields:{
                        textname:val[this.var.textname]
                    }
                }
                tmp.fields[this.var.fieldid]= val[this.var.id];
                tmpList.push(tmp)
            })
        }
       else if(typeof data === 'object'){
            let tmp = {
                text:data[this.var.textname],
                fields:{
                    textname:data[this.var.textname]
                }
            }
            tmp.fields[this.var.fieldid]= data[this.var.id];
            tmpList.push(tmp);
       }
        return tmpList;
    },
    onInit(self){
        if((this.data()).length ==1){//如果下拉选择只有一种情况 默认选择并且置灰
            let tmp = (this.data())[0];
            self.value(self.tagData, false);
            self.value(this.setValue(self,tmp),'',true);
            self.target.prop('disabled',true).data('defaultvalue',tmp).closest('.Tag').addClass('s-dis');
        }else{
            if(self.target.prop('disabled') && (!self.target.data('defaultvalue'))){//默认禁用没有初始值
                self.target.closest('.Tag').find('.Wrap').html('');
            }else if(self.target.data('defaultvalue')){//有初始值
                self.value(self.tagData, false);
                self.value(this.insert(self.target.data('defaultvalue')),'',true);
            }else{
                if((this.data()).length && (this.data())[0][this.var.id] ==''){//拉下列表选中第一个id为空的作为初始值
                     self.value(this.setValue(self,(this.data())[0]),'',true);
                }
            }
            self.target.closest('.Tag')[self.target.prop('disabled')?'addClass':'removeClass']('s-dis')//设置禁用的样式
        }
        if(self.tagData && self.tagData.length){//如果有值将input的透明度设置为0
            self.target.addClass('opt0');
        }else{
            self.target.removeClass('opt0');
        }
    },
    onShow(){
        $(this.target).next().addClass('up');
    },
    onHide(){
        $(this.target).next().removeClass('up');
    }
})
// form.config({

// })